﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Utilitarios;

public partial class Seguridad_Usuarios_FormularioCambiarPassword : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    public int UsuarioId
    {
        set { UsuarioIdHiddenField.Value = value.ToString(); }
        get
        {
            int usuarioId = 0;
            try
            {
                usuarioId = Convert.ToInt32(UsuarioIdHiddenField.Value);
            }
            catch { }
            return usuarioId;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ObtenerParametros();
        }
    }

    protected void ObtenerParametros()
    {
        if (Session["UsuarioId"] != null && !string.IsNullOrEmpty(Session["UsuarioId"].ToString()))
        {
            UsuarioId = 0;
            try
            {
                UsuarioIdHiddenField.Value = Session["UsuarioId"].ToString();
                CargarDatos();
            }
            catch (Exception ex)
            {
                log.Error("No se pudo obtener el usuarioId de los parametros de session", ex);
            }

        }
        Session["UsuarioId"] = null;
        if (Session["BackToUrl"] != null && !string.IsNullOrEmpty(Session["BackToUrl"].ToString()))
        {
            try
            {
                BackToUrlHiddenField.Value = Session["BackToUrl"].ToString();
            }
            catch (Exception ex)
            {
                log.Error("No se pudo obtener la url a redireccionar de los parametros de session", ex);
            }

        }
        Session["BackToUrl"] = null;
    }

    protected void CargarDatos()
    {
        
        Iudicium.Persona.PersonaNatural persona = null;

        try
        {
            persona = Iudicium.Persona.CRN.PersonaNaturalCRN.GetPersonaNaturalById(UsuarioId);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener los datos de la Persona vinculada al Usuario", ex);
        }

        PersonaSeleccionada.SelectedId = persona.PersonaId;
        PersonaSeleccionada.SelectedName = persona != null ? persona.Nombre : "Error al obtener el nombre del Usuario";
        PersonaSeleccionada.Enabled = false;
    }

    protected void GuardarLinkButton_Click(object sender, EventArgs e)
    {
        string password = Utilitarios.Encriptar(PasswordTextBox.Text);
        try
        {
            Iudicium.Seguridad.CRN.UsuarioCRN.CambiarPassword(UsuarioId, password);
            Notificacion.MostrarNotificacion("La contraseña ha sido cambiada correctamente.", Notificacion.TipoNotificacion.Alert);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo el password del usuario", ex);
            Notificacion.MostrarNotificacion("Ocurrio un error al tratar de cambiar la contraseña del Usuario.", Notificacion.TipoNotificacion.Error);
            ControlNotificacion.Update();
            return;
        }
        Volver();
    }

    protected void CancelarLinkButton_Click(object sender, EventArgs e)
    {
        Volver();
    }

    protected void Volver()
    {
        string url = string.IsNullOrEmpty(BackToUrlHiddenField.Value) ? "~/Default.aspx" : BackToUrlHiddenField.Value;
        if (url.Equals("~/Seguridad/Usuarios/FormularioUsuario.aspx"))
        {
            Session["UsuarioId"] = UsuarioId;
        }
        Response.Redirect(url);
    }
}